public class CodeBlock2 {
    public static void main(String[] args) {
        A a = new A();
    }
}

class A{
//    创建对象后的执行顺序
//    1、调用静态代码块和静态属性
//    2、调用普通代码块和普通变量
//    3、调用构造方法
//    静态变量和静态代码块执行顺序是同等的，只是静态变量n1在前会先被执行
    private static int n1=getN1();
    private String name=getName();
    static{
        System.out.println("静态代码块被执行");
    }
    {
        System.out.println("普通代码块被执行");
    }
    public A(){
        System.out.println("无参构造器被调用");
    }

    public static int getN1(){
        System.out.println("getN1被调用...");
        return 100;
    }
    public String getName(){
        System.out.println("getName普通方法被调用");
        return "zhangsan";
    }

}